
import{createStore} from "vuex"
import {getinfo, login} from "../api/manager"
import { removeToken, setToken } from "../composables/auth"
const store=createStore({
    state(){
        return {
            //用户信息
            user:{}
        }
    },
    mutations:{
        //记录用户信息
        SET_USERINFO(state,user){
            state.user=user
        },
        //展开/缩起侧边
        handleAsideWidth(state){
            state.asideWidth=state.asideWidth=="250px"?"64px":"250px"
        },
        SET_MENUS(state,menus){
            state.menus=menus
        },
        SET_RULENAMES(state,ruleNames){
            state.ruleNames=ruleNames
        }
    },
    actions:{
        //登录----这个不是解决刷新问题，是简化代码用的
        login({commit},{username,password}){
            return new Promise((resolve,reject)=>{
                login(username,password).then(res=>{
                    setToken(res.token)
                    resolve(res)
                }).catch(err=>reject(err))
            })
        },
        //获取当前登录用户信息
        getinfo({commit}){
            return new Promise((resolve,reject)=>{
                getinfo().then(res=>{
                    commit("SET_USERINFO",res)
                    commit("SET_MENUS",res.menus)
                    commit("SET_RULENAMES",)
                    resolve(res)
                }).catch(err=>reject(err))
            })
        },
        //退出登录
        logout({commit}){
            //移除cookie里面的token
            removeToken()
            //清除当前用户状态vuex
            commit("SET_USERINFO",{})

        }

    }
})
export default store